package com.nablasystems.suag.domain;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;

@Entity
@Table (name="carrera")
public class Carrera {
	//Atributos
	@Id
	@Column(name="idCarrera")
	@GeneratedValue
	private int idCarrera;
	
	@Column(name="nombre")
	private String nombre;
	
	@Column(name="descripcion")
	private String descripcion;

	
	//Atributo muchos a muchos
	@ManyToMany(cascade = {CascadeType.ALL})
	@JoinTable(name="materia_x_carrera",joinColumns={@JoinColumn(name="idCarrera")},inverseJoinColumns={@JoinColumn(name="idMateria")})
	private Set<Materia> materias = new HashSet<Materia>();
	
	@OneToMany(mappedBy="carrera",cascade= CascadeType.ALL)
	private Set<Alumno> alumnosInscriptos = new HashSet<Alumno>();
	
	//Settings and Gettings
	public int getIdCarrera() {
		return idCarrera;
	}

	public void setIdCarrera(int idCarrera) {
		this.idCarrera = idCarrera;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public Set<Materia> getMaterias() {
		return materias;
	}

	public void setMaterias(Set<Materia> materias) {
		this.materias = materias;
	}

	public Set<Alumno> getAlumnosInscriptos() {
		return alumnosInscriptos;
	}

	public void setAlumnosInscriptos(Set<Alumno> alumnosInscriptos) {
		this.alumnosInscriptos = alumnosInscriptos;
	}
}
